//对axios作一个封装
import axios from 'axios'

// 创建一个axios实例
const service = axios.create({
  baseURL: 'http://localhost:3000', // 设置请求的后端 接口的url
  timeout: 5000, //  请求超时时间 5s
})

// 拦截器：在请求或 响应到数据后做点事

// 请求拦截器，在请求发出去之前，拦截下来，做一些处理，再返回配置信息
service.interceptors.request.use(
  (config) => {
    // 如果有token，就添加到请求头中
    const token = localStorage.getItem('token')
    if (token) {
      config.headers['Authorization'] = `Bearer ${token}`
    }
    return config
  },
  (error) => {
    return Promise.reject(error)
  }
)

// 响应拦截器: 在响应到数据后，拦截下来，做一些处理，再返回数据
service.interceptors.response.use(
  (response) => {
    // http请求成功(比如200)，直接返回data
    console.log('HTTP请求成功:', response.status,response)
    return response.data //不用每次拿到数据后 使用data属性
  },
  (error) => {
    // http请求失败，比如404、500，统一处理
    console.error('HTTP错误:', error.response?.status, error.message)
    return Promise.reject(error)
  }
)

// 返回axios实例
export default service
